﻿package javase.socket.client;
/**
 * @author wangmj
 * DatagranSocket 只允许数据报发送一个目的地址，java.net
 * 包中提供了一个类MulticastSocket，允许数据报以广播的方式
 * 发送到该端口的所有客户。MulticastSocket用在客户端，监听
 * 服务器广播的数据。
 * MuliticastClient2.java
 */
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;

public class MuliticastClient 
{
	public static void main(String[] args) throws Exception
	{
		MulticastSocket socket = new MulticastSocket(4446);
		InetAddress address = InetAddress.getByName("230.0.0.1");
		//注意：客户方使用的是MulticastSocket，而且这个Socket需要捆绑在特定
		//的组地址上，用JoinGroup()方法捆绑，这里使用的组地址为：230.0.0.1
		//注意这里的地址是广播地址
		socket.joinGroup(address);
		DatagramPacket packet = null;
		//get a few quotes
		for(int i =0;i<5; i++)
		{
			byte[] buf = new byte[256];
			packet = new DatagramPacket(buf,buf.length);
			socket.receive(packet);
			String received = new String(packet.getData());
			System.out.println("Quote of the Moment:"+received);
		}
		socket.leaveGroup(address);
		socket.close();
	}
}
